#include <iostream>
using namespace std;
//当子类和父类出现同名的成员,如何通过子类对象,访问到子类或父类中同名的数据呢?

//1.访问子类同名成员,直接访问即可
//2.访问父类同名成员 需要加载作用域
class Base1{
public:
   Base1(){
    m_A = 100;
   }
   
   void func(){
    cout << "Base - func()调用" << endl;
   }
   void func(int a){
    cout << "Base - func(int a)调用" << endl;
   }
   int m_A;
};

class Son1 : public Base1{
public:
    Son1(){
        m_A = 200;
    }
    
    void func(){
        cout << "Son1 - func()调用" << endl;
    }

   int m_A;
};

//同名成员属性处理
void test01(){
    Son1 s;
    cout << "Son下m_A = " << s.m_A << endl;
    //如果通过子类对象,访问到父类中同名成员,需要加作用域
    cout << "Base1下m_A = " << s.Base1::m_A << endl;
}
//同名成员函数处理
void test02(){
    Son1 s;
    s.func();//直接调用 调用的是子类中的同名成员
    //如何调用父类中同名成员函数
    s.Base1::func();
    //如果子类中出现和父类同名的成员函数,子类的同名成员会隐藏掉父类中所有同名成员函数
    //如果想访问到父类中被隐藏的同名成员函数,需要加作用域
    s.Base1::func(100);
}


int main(){
    // test01();
    test02();
    system("pause");
    return 0;
}